<?php
!defined('M_MODULE_DIR')&&define('M_MODULE_DIR',M_DIR.'module/');
/**
 * #默认module文件夹
 * #执行module:user 的 actionAdd 方法
 * m()->run('user','add'); 
 * 
 * #执行test文件夹中的module
 * m()->->run('user','add','test'); 
 *
 */
class lib_run extends lib_milkphp_library{
	/**
	 * module名称
	 * @var string
	 */
	private $module;
	
	/**
	 * action名称
	 * @var $action string
	 */
	private $action;
	
	/**
	 * module文件路径
	 * @var $moduleDir String
	 */
	private $moduleDir;

	static function _do($module=NULL,$action=NULL,$moduleDir=NULL){
		return new lib_run($module,$action,$moduleDir);
	}
	
	private function __construct($module=NULL,$action=NULL,$moduleDir=NULL){
		if(is_array($module)){
			$action = $module[1];
			$module = $module[0];
			$moduleDir = $action;
		}
		$this->module = $module;
		$this->action = $action;
		
		$this->moduleDir = empty($moduleDir)?milkphp()->dir['module']:$moduleDir;
		return $this->runModule();
	}
	
	/**
	 * 执行module
	 */
	function runModule(){
		$module = empty($this->module)?'index':$this->module;
		$action = empty($this->action)?'Index':ucfirst(strtolower($this->action));
		
		if(!preg_match("/^[a-z|0-9|A-Z|_]+$/",$module)||!preg_match("/^[a-z|0-9|A-Z|_]+$/",$action)){
			milkphp()->debug('e',"module:$module 或 action:$action 不合法");
		}
		
		$moduleName = 'module_'.$module;
		$file = $this->moduleDir.$module.'.php';
		if(@include($file)){
			if(method_exists($moduleName,'action'.$action)){
				$moduleObject = new $moduleName();
				m()->status['module']=$module;
				m()->status['action']=$action;
				return $moduleObject->{'action'.$action}();
			}	
		}else{
			milkphp()->debug('e',"文件 $file不存在");
		}
	}
}